package com.yang.dto.resp;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 分页查询订单详情响应参数
 * 作者：孤城暖阳y
 * 日期：2025-03-02
 */
@Data
@Schema(description = "分页查询订单详情响应参数")
public class OrderDetailPageQueryRespDTO {

    /**
     * 订单详情唯一标识
     * 数据库自动递增
     */
    @Schema(description = "订单详情ID")
    private Long orderDetailId;

    /**
     * 关联的主订单ID
     * 用于追踪所属订单信息
     */
    @Schema(description = "关联订单ID")
    private Long ordersId;

    /**
     * 下单用户唯一标识
     * 关联用户表的用户ID
     */
    @Schema(description = "用户ID")
    private Long userId;

    /**
     * 商品唯一标识
     * 关联商品表的商品ID
     */
    @Schema(description = "商品ID")
    private Long commodityId;

    /**
     * 商品展示名称
     * 最大长度50个字符，用于前端展示
     */
    @Schema(description = "商品名称")
    private String commodityTitle;

    /**
     * 商品封面图URL地址
     * 支持HTTP/HTTPS协议，用于订单列表缩略图展示
     */
    @Schema(description = "商品封面图URL")
    private String coverImage;

    /**
     * skuId
     */
    @Schema(description = "skuId")
    private Long skuId;

    /**
     * sku的name值
     * MongoDB中skus表的内容
     */
    @Schema(description = "sku的name值")
    private String skuName;

    /**
     * sku的valueName值
     * MongoDB中skus表的内容
     */
    @Schema(description = "sku的valueName值")
    private String skuValueName;

    /**
     * 地址id
     */
    @Schema(description = "地址id")
    private Long addressId;

    /**
     * 收货姓名
     */
    @Schema(description = "收货姓名")
    private String receiverName;

    /**
     * 收货手机号
     */
    @Schema(description = "收货手机号")
    private String receiverPhone;

    /**
     * 收货地址
     */
    @Schema(description = "收获地址")
    private String receiverAddressDescription;

    /**
     * 商品购买数量
     * 最小值为1，最大值为999
     */
    @Schema(description = "购买数量")
    private Integer quantity;

    /**
     * 商品订单中单个商品详情的成交金额
     * 使用BigDecimal类型确保计算精度
     * 包含两位小数（单位：元）
     */
    @Schema(description = "订单详情总金额")
    private BigDecimal totalPrice;

    /**
     * 订单状态
     * 订单支付状态（1.待付款、2.已付款、3.待发货、4.已发货、5.已完成、6.取消订单）
     */
    @Schema(description = "订单状态")
    private Integer status;

    /**
     * 订单创建时间
     * 遵循ISO8601标准格式：yyyy-MM-dd HH:mm:ss
     */
    @Schema(description = "订单创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 订单最近更新时间
     * 遵循ISO8601标准格式：yyyy-MM-dd HH:mm:ss
     */
    @Schema(description = "订单更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;


}
